9298
2552
Deze vraag heeft hier al antwoorden:
Keer een string om in Python
(29 antwoorden)
4 jaar geleden gesloten.
Ik probeer een string om te keren en gebruik de onderstaande code, maar de resulterende omgekeerde lijstwaarde is Geen.
De code:
str_a = 'Dit roert'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = '' .join (rev_word)
Het geeft de TypeError terug. Waarom? 
.reverse () retourneert Geen. Daarom moet u het niet aan een variabele toewijzen.
Gebruik dit in plaats daarvan:
stra = 'Dit is een string'
revword = stra.split ()
revword.reverse ()
revword = ''. join (revword)
Ik heb de code op IDEOne voor je uitgevoerd, zodat je de uitvoer kunt zien. (Merk ook op dat de uitvoer stringaisThis is; misschien wilt u in plaats daarvan '' .join (revword) gebruiken, met een spatie.)
Merk ook op dat de methode die u heeft opgegeven alleen de woorden omkeert, niet de tekst. @ ron.rothman leverde een link die gedetailleerd beschrijft hoe een string in zijn geheel moet worden omgedraaid.
|
Dit is mijn persoonlijke favoriete manier om een ​​string om te draaien:
stra = "Dit is een string"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
of, als u de woordvolgorde wilt omkeren:
revword = "" .join (stra.split () [:: - 1])
print (revword) # "string a is This"
:)
|
Diverse omkeringen aan een string:
instring = 'Dit is een string'
reversedstring = instring [:: - 1]
print reversedstring # gnirts a si sihT
wordsreversed = '' .join (word [:: - 1] voor woord in instring.split ())
print woordenomgedraaid # sihT si a gnirts
revwordorder = '' .join (woord voor woord in instring.split () [:: - 1])
print revwordorder # string a is dit
revwordandorder = '' .join (woord [:: - 1] voor woord in instring.split () [:: - 1])
print revwordandorder # gnirts a si sihT
|
Voor toekomstige referentie wanneer een object een methode heeft zoals [] .reverse (), voert het over het algemeen die actie uit op het object (dwz de lijst is gesorteerd en retourneert niets, Geen) in tegenstelling tot ingebouwde functies zoals gesorteerd die een actie uitvoeren op een object en retourneert een waarde (dwz de gesorteerde lijst)
|
>>> s = 'dit is een string'
>>> s [:: - 1]
'gnirts a si siht'
>>> '' .join (omgekeerd (s))
'gnirts a si siht'
|
De for-lus herhaalt de string van end (laatste letter) naar start (eerste letter)
>>> s = 'Dit kun je ook proberen:]'
>>> rev = ''
>>> voor i in bereik (len (s) - 1, -1, -1):
... rev + = s [i]
>>> rev
']: oot siht yrt nac uoY'
|
Gebaseerd op opmerkingen en andere antwoorden:
str_a = 'dit is een string'
rev_word = '' .join (omgekeerd (str_a.split ()))
Method chaining werkt immers in Python ...
|
Lijst omkeren kan op meer dan één manier worden gedaan. Zoals vermeld in eerdere antwoorden zijn er twee erg prominent, één met reverse () -functie en twee met slicing-functie. Ik geef enkele inzichten aan welke we de voorkeur zouden moeten geven.
We moeten altijd de functie reverse () gebruiken voor het omkeren van een Python-lijst. Twee redenen, één omkering ter plaatse en twee sneller dan andere.
Ik heb enkele cijfers om mijn antwoord te ondersteunen,
In [15]: len (l)
Uit [15]: 1000
In [16]:% timeit -n1 l.reverse ()
1 loops, beste van 3: 7,87 µs per loop
In [17]:% timeit -n1 l [:: - 1]
1 loops, beste van 3:10 µs per loop
Voor een lijst met 1000 gehele getallen presteerde de functie reverse () beter in vergelijking met segmentering.
|
Niet het antwoord waar je naar zoekt? Blader door andere vragen met de tag python of stel uw eigen vraag.